<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>201.品牌列表案例</title>
    <script src="./lib/vue-2.6.12.js"></script>
    <script src="./lib/axios.min.js"></script>
    <link rel="stylesheet" href="./lib/bootstrap-3.3.7.css">
</head>

<body>
    <div id="app">
        <!-- 1. 注意，如果组件使用驼峰命名，使用时需要改为 小写加"-" -->
        <comp1></comp1>

        <!-- 2. 在 HTML 中是 kebab-case 的 -->
        <my-comp post-title="hello Vue.component !"></my-comp>

        <!-- 3. 在 Vue 控制的元素之外定义组件模板  -->
        <comp3></comp3>

        <!-- 4. 私有组件 -->
        <login></login>
        <strong>{{ vmmsg }}</strong>
        <register></register>
    </div>

    <!-- 3. 在 Vue 控制的元素之外定义组件模板 -->
    <template id=tmpl>
        <div >
            <h3>这是通过template元素，在外部定义组件模板，更好用。</h3>     
            <p>{{ commsg }}, </p>       
        </div>
    </template>

    <!-- 脚本 -->
    <script>
        // 1. 使用 Vue.extend 来创建全局组件
        // 1.1 定义模板对象
        let temp1 = Vue.extend({
            template: '<h3>这是使用 Vue.extend 来创建组件</h3>'
        });
        // 1.2 注册此组件模板
        Vue.component('comp1', temp1);

        // 2. 直接使用 component 注册全局组件
        Vue.component('my-comp', {
            // 在 JavaScript 中是 camelCase 的
            props: ['postTitle'],
            // 注意：只能有一个根元素
            template: '<h3>{{ postTitle }}</h3>'
        })

        // 3. 在 Vue 控制的元素之外定义组件模板
        Vue.component('comp3', {
            template: '#tmpl',
            // 组件可以有data，但是必须是一个函数，且必须返回对象
            data() {
                return {
                    commsg: '这是组件的私有数据'
                }
            }
        });

        // 4. 定义组件配置对象
        const register = {
            template: '<div><h4>这是私有的组件：注册组件</h4></div>'
        }

        // 创建 Vue 实例
        let vm = new Vue({
            el: '#app',
            data: {
                vmmsg: '这是vm上的数据'
            },
            methods: {
            },
            filters: {
            },
            directives: {
            },
            components: {
                // 私有组件
                login: {
                    template: '<p><strong>这是私有的组件：login</strong></p>'
                },
                // register: register 的简写
                register 
            },

            // 生命周期函数
            beforeCreate() {
            },
            created() {
            },
            beforeMount() {
            },
            mounted() {
            },
            beforeUpdate() {
            },
            updated() {
            },
            beforeDestroy() {
            },
            destroyed() {
            },
        })

    </script>
</body>

</html>